Every day, several quintillion bytes of data may be created around the world. This data comes from everywhere: posts to social media sites, digital pictures and videos, purchase transaction records, bank transactions, sensors used to gather data and intelligence, like climate information, cell phone GPS signal, and many others. This type (e.g., kind) of data and its vast accumulation is often referred to as “big data.” This vast amount of data eventually is stored and maintained in storage nodes, such as solid-state storage drives (SSDs), and the like, and these may reside on networks or on storage accessible via the Internet. This stored data may require processing, or be subject to operations, such as search, query, encryption/decryption, compression, decompression, and/or other processes. In a server platform, for example, a processing device, such as a central processing unit (CPU), performs operations on the data. The data may be read from the SSD, processed by the CPU, and the processed data may be sent to the source of a request. The SSD may include a non-volatile memory (e.g., flash memory) for storage of data and a controller that facilitates the transfer of data to and from the non-volatile memory.
The controller may be capable of queuing read and write operations in order to increase performance of the data transfers to and from a host (e.g., a server). As such, the host may send several command requests to the SSD, and the controller may pre-process the commands and send more than one request at a time to the non-volatile memory, thus, improving the overall performance of the SSD.
The data transfers to and from the host may be staged in an internal data buffer of the SSD to adjust for different data formats between the non-volatile memory and the host. In addition, the internal data buffer provides a temporary storage location for the various commands that may be executing concurrently by the controller, and thus, compensates for the variation in performance caused by conflicts on the memory channel buses and allows for a uniform bandwidth from perspective of the host.
In the related art SSD controller, a controller processor allocates and de-allocates space in the internal data buffer. The controller processor calculates the amount of space available in the internal data buffer and where in the internal data buffer each piece of data is to be stored and allocates/de-allocates space in the internal data buffer in response to a write or read command from the host. However, this process may be time consuming and present an overhead for the controller processor that directly affects the performance and latency of the SSD.
Therefore, what is desired is a system and method for management of the internal data buffer of the SSD, which reduces (e.g., minimizes) the involvement of the controller processor in a read or write operation and frees up the controller processor to perform other operations, thus improving the overall performance of the SSD.